|
In programming languages, an abstract type is a type in a nominative type system which cannot be instantiated directly. Abstract types are also known as existential types.〔Mitchell, John C.; Plotkin, Gordon D.; (''Abstract Types Have Existential Type'' ), ACM Transactions on Programming Languages and Systems, Vol. 10, No. 3, July 1988, pp. 470–502〕 An abstract type may provide no implementation, or an incomplete implementation. Often, abstract types will have one or more implementations provided separately, for example, in the form of concrete subclasses which ''can'' be instantiated. It may include ''abstract methods'' or ''abstract properties''〔http://download.oracle.com/javase/tutorial/java/IandI/abstract.html〕 that are shared by its subtypes. The object oriented form of abstract types are known as ''abstract base classes'' or simply ''abstract classes''. In some languages, abstract types with no implementation are known as ''protocols'', ''interfaces'', ''signatures'', ''class types''. Other names for language features that are (or may be) used to implement abstract types include ''traits'', ''mixins'', ''flavors'', ''roles'', or ''type classes''. A type that is not abstract is called a ''concrete type'' (or ''concrete class''). == Signifying abstract types == Abstract classes can be created, signified, or simulated in several ways: * By use of the explicit keyword abstract in the class definition, as in Java, D or C#. * By including, in the class definition, one or more abstract methods (called ''pure virtual functions'' in C++), which the class is declared to accept as part of its protocol, but for which no implementation is provided. * By inheriting from an abstract type, and not overriding all missing features necessary to complete the class definition. * In many dynamically typed languages such as Smalltalk, any class which sends a particular method to this, but doesn't implement that method, can be considered abstract. (However, in many such languages, like Objective-C, the error is not detected until the class is used, and the message returns results in an exception error message such as "Does not recognize selector: xxx" as - (doesNotRecognizeSelector:(SEL)selector ) is invoked upon detection of an unimplemented method).抄文引用元・出典: フリー百科事典『 ウィキペディア(Wikipedia)』 ■ウィキペディアで「Abstract type」の詳細全文を読む スポンサード リンク
|